php命令行按模板生成应用的入口文件

您所在的位置:网站首页 ghost frame php命令行按模板生成应用的入口文件

php命令行按模板生成应用的入口文件

2023-09-08 16:15| 来源: 网络整理| 查看: 265

接着这篇文章php命令行生成项目结构 继续改造: 

ghostwu@dev:~/php/php1/12$ tree . ├── app │   └── index.php ├── core │   ├── frame │   │   ├── ghost_frame.php │   │   └── template │   │   └── index.tpl │   └── ghostinit.php ├── function.php ├── ghost └── go.json

index.tpl:

/** * project name: * author: * date: * */ echo "hello ghostwu";

生成的入口文件就是按照这个 模板解释的, 模板中的变量从go.json读取

ghostinit.php:

namespace core; use core\frame\ghost_frame; class ghostinit{ static $v = 'ghost version is 1.1'; static function init(){ echo "pls input project name?" . PHP_EOL; $projName = fgets( STDIN ); echo "pls input author?" . PHP_EOL; $author = fgets( STDIN ); echo self::buildConfig( [ 'proj' => $projName, 'author' => $author ] ); } static function buildConfig( $info ){ return file_put_contents( getcwd() . '/go.json', json_encode( $info ) ) . ' bytes has written,' . 'config file has created' . PHP_EOL; } static function show(){ $conf = self::loadConfig(); foreach( $conf as $k => $v ){ echo $k . ':' . $v; } } static function loadConfig(){ return json_decode( file_get_contents( getcwd() . '/go.json' ) ); } static function start(){ $conf = self::loadConfig(); //$gf = new core\frame\ghost_frame( trim( $conf->proj ) ); //用use引入命名空间 就不需要每次都加上命名空间去实例化类 $gf = new ghost_frame( trim( $conf->proj ) ); $gf->proj = trim( $conf->proj ); $gf->author = trim( $conf->author ); $gf->run(); } static function __callstatic( $m, $args ){ echo 'error function'; } }

ghost_frame.php

namespace core\frame; class ghost_frame{ public $proj = ''; public $entrace_file = ''; public function __construct( $proj ) { $this->proj = $proj; } public function run(){ $dir = getcwd() . '/' . $this->proj; !file_exists( $dir ) && mkdir( $dir ); extract( get_object_vars( $this ) ); ob_start(); include( dirname( __FILE__ ) . '/template/index.tpl' ); $content = ob_get_contents(); ob_end_clean(); file_put_contents( $dir . '/index.php', $content ); } }

应用:

ghostwu@dev:~/php/php1/12$ tree . ├── core │   ├── frame │   │   ├── ghost_frame.php │   │   └── template │   │   └── index.tpl │   └── ghostinit.php ├── function.php └── ghost 3 directories, 5 files ghostwu@dev:~/php/php1/12$ ./ghost init pls input project name? Application pls input author? ghostwu 45 bytes has written,config file has created ghostwu@dev:~/php/php1/12$ tree . ├── core │   ├── frame │   │   ├── ghost_frame.php │   │   └── template │   │   └── index.tpl │   └── ghostinit.php ├── function.php ├── ghost └── go.json 3 directories, 6 files ghostwu@dev:~/php/php1/12$ ./ghost start ghostwu@dev:~/php/php1/12$ tree . ├── Application │   └── index.php ├── core │   ├── frame │   │   ├── ghost_frame.php │   │   └── template │   │   └── index.tpl │   └── ghostinit.php ├── function.php ├── ghost └── go.json 4 directories, 7 files ghostwu@dev:~/php/php1/12$ cat Application/index.php


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3